import { Message as message } from 'element-ui'
import { toLogin } from '@/utils'

// 其他错误处理流程
export const otherErrorHandle = (msg) => {
  msg && message.error(msg)
}

// todo 验证失败 处理流程
export const unauthorizedHandle = (resp) => {
  toLogin()
}
// todo 权限验证失败 处理流程
export const permissionHandle = (resp) => {
  location.href = '/403'
}
export const exportFile = (response) => {
  // 提取文件名
  const filename = response.headers['content-disposition'].match(/filename=(.*)/)[1]
  // 将二进制流转为blob
  const blob = new Blob([response.data],)
  if (typeof window.navigator.msSaveBlob !== 'undefined') {
    // 兼容IE，window.navigator.msSaveBlob：以本地方式保存文件
    window.navigator.msSaveBlob(blob, decodeURI(filename))
  } else {
    // 创建新的URL并指向File对象或者Blob对象的地址
    const blobURL = window.URL.createObjectURL(blob)
    // 创建a标签，用于跳转至下载链接
    const link = document.createElement('a')
    link.style.display = 'none'
    link.href = blobURL
    link.setAttribute('download', decodeURI(filename))
    // 兼容：某些浏览器不支持HTML5的download属性
    if (typeof link.download === 'undefined') {
      link.setAttribute('target', '_blank')
    }
    // 挂载a标签
    document.body.appendChild(link)
    link.click()
    document.body.removeChild(link)
    // 释放blob URL地址
    window.URL.revokeObjectURL(blobURL)
  }
  return true
}

export const responseFailedHandle = (code, resp, msg) => {
  console.log('responseFailedHandle', code, resp, msg)
  switch (+code) {
    case 401:
      return unauthorizedHandle(resp)
    case 403:
      return permissionHandle(resp)
    default: {
      return otherErrorHandle(msg || status)
    }
  }
}
